<?php

    class CTemplate
    {
		var $m_szFile;		//content do parsowania
		var $m_iFileSize;	//rozmiar pliku do parsowania
		
		var $m_hVar;		//zmienne html'owe ktore przekazujemy do szablonow
		
		var $m_szPhpCode;	//kod wynikowy php po kapilacji szablonu

		
		var $m_szTplFile;	//plik z zawartoscia szablonu
		
		var $m_iCacheTTL;	//czas zycia szablonu
		var $m_szCacheFile;	//lokalizacja pliku cache
		
		var $m_bCacheSave;	//czy zachowac skapilowanego php'a
		
		var $m_iCurrTm;		//obecny czas na potrzeby cacheowania
		
		static function &GetInstance()
		{
			global $g_hObjects;
			static $m_hApp = NULL;
						 
			if(!isset($m_hApp))
			{
				$m_hApp       = new CTemplate();					 
				$g_hObjects[] = $m_hApp;
				$m_hApp->OnInit();
			}
			
			return $m_hApp;
		}
		
		
		function OnInit()
		{
			//zmienne w szablonach
			$this->m_hVar = array();
			
			//kod php do wykonania
			$this->m_szPhpCode = '';
			
			//sciezka do pliku z szabonem html
			$this->m_szTplFile = '';
			
			//cache
			$this->m_iCacheTTL   = 0;
			$this->m_szCacheFile = '';

			//obecny czas
			$this->m_iCurrTm = time();
			
			//dmoyslnie nie zachowujemy skapilowanego php'a
			$this->m_bCacheSave = false;
		}
		
		function OnDestroy()
		{
			if($this->m_bCacheSave)
			{
				file_put_contents($this->m_szCacheFile,$this->m_szPhpCode);
				
				$iTTL = $this->m_iCurrTm + $this->m_iCacheTTL;
				
				@chmod($this->m_szCacheFile,0666);
				@touch($this->m_szCacheFile,$iTTL,$iTTL);
			}
		}
		
		
		/* laduje plik szablonu */
		function Load($szTplFile,$iCacheTTL = 0)
		{	
			if(!file_exists($szTplFile)) { echo 'Plik nie istnieje: '.$szTplFile; die(); }
			
			$this->m_szTplFile = $szTplFile;
			$this->m_iCacheTTL = $iCacheTTL;
			
			if($iCacheTTL == '')
			{
				$this->m_szFile     = CFile::FileToString($szTplFile);
				$this->m_szFileSize = strlen($this->m_szFile);
				
				return;
			}

			$iSlashPos = strrpos($szTplFile,'/');
			$iDotPos   = strrpos($szTplFile,'.',$iSlashPos);
			
			$this->m_szCacheFile = substr($szTplFile,$iSlashPos,$iDotPos-$iSlashPos);
			$this->m_szCacheFile = strtr($this->m_szCacheFile,'-.','__');
			$this->m_szCacheFile = CACHE_TPL.'/'.$this->m_szCacheFile.'_'.md5($szTplFile);
			
			$iTplTs   = date('U', filemtime($szTplFile));
			$iCacheTs = file_exists($this->m_szCacheFile) ? date('U', filemtime($this->m_szCacheFile)) : '0';
			
			
			//echo 'iTplTs = '.$iTplTs;
			//echo '<br/><br/>';
			//echo 'iCurrTm = '.$this->m_iCurrTm;
			//echo '<br/><br/><br/>';
			
			if($iTplTs + 30*60 >= $this->m_iCurrTm )
			{
				//jesli plik zostal zmodyfikowany - przez 30 min nie bedzie cacheowany
				
				$this->m_szFile     = CFile::FileToString($szTplFile);
				$this->m_szFileSize = strlen($this->m_szFile);
				
				if($iCacheTs) { unlink($this->m_szCacheFile); }
				
				//echo 'swiezynka';
			}
			else if($iCacheTs && $iCacheTs <= $this->m_iCurrTm)
			{
				//plik cache stracil waznosc
				$this->m_szFile     = CFile::FileToString($szTplFile);
				$this->m_szFileSize = strlen($this->m_szFile);
				
				//skasuj plik cache
				unlink($this->m_szCacheFile);
				
				//zachowaj wynik kapilacji
				$this->m_bCacheSave = true;
				
				//echo 'plik cache stracil waznosc';
			}
			else if($iCacheTs && $iCacheTs > $this->m_iCurrTm)
			{
				//pobieramy php'a z cache
				$this->m_szPhpCode = file_get_contents($this->m_szCacheFile);
				
				//echo 'php z cache';
			}
			else
			{
				//kapilacja
				$this->m_szFile     = CFile::FileToString($szTplFile);
				$this->m_szFileSize = strlen($this->m_szFile);
				
				$this->m_bCacheSave = true;
				
				//echo 'kapilacja';
			}
			
		}
		
		/* dodaje zmienna do szablonu */
		function AddVar($szName,$szVal)
		{
			$this->m_hVar[$szName] = $szVal;
		}
		
		/* usuwa zmienna z szablonow */
		function RemVar($szName)
		{
			unset($this->m_hVar[$szName]);
		}
	
		
		function ProcessInclude()
		{
			$cOpenTag    = '{';		//znak otwarcia tagu
			$cCloseTag   = '}';		//znak zamkniecia tagu
			
			$iOffset     = 0; 		//pozycja w pliku ktory jest przetwarzany
			$iTagOpen    = 0; 		//znak otwierajacy tag
			$iTagClose   = 0; 		//znak zamykajacy tag
					
			$bTagOpen    = false; 	//czy tag jest otwarty
			
			$m_szPhpCode = ''; 		//kod php do wykonania
			$szTag 		 = ''; 		//nazwa obecnie przetwarzane tag
			
			$szIncPath   = TPL_DIR; //substr($this->m_szTplFile,0,strrpos($this->m_szTplFile,'/')+1);
			
			
			//nowa zawartosc pliku
			$szFile = '';
			
			while(true)
			{
				if($iOffset >= $this->m_szFileSize) { break; }
				
				$iTagOpen  = strpos($this->m_szFile,$cOpenTag,$iOffset);
				$iTagClose = strpos($this->m_szFile,$cCloseTag,$iOffset);
				
				if($iTagOpen === false || $iTagClose === false) 
				{
					$szFile .= substr($this->m_szFile,$iOffset);
					break; 
				}
				
				//extrahujemy tag
				$szTag = substr($this->m_szFile,$iTagOpen+1,$iTagClose-$iTagOpen-1);
				$szTag = trim($szTag);
				
				$szFile .= substr($this->m_szFile,$iOffset,$iTagOpen-$iOffset);
				
				if(strncmp($szTag,'include',7) == 0)
				{
					$szInc = substr($szTag,7);
					$szInc = $szIncPath.'/'.trim($szInc);
					
					
					if(is_file($szInc))
					{						
						$szIncTxt = file_get_contents($szInc);
						$szIncLen = strlen($szIncTxt);
						
						$szFile .= "\r\n<!-- include begin '.$szInc.' -->\r\n";
						$szFile .= $szIncTxt;
						$szFile .= "\r\n<!-- include end '.$szInc.' -->\r\n";
					}
					
				}
				
				$iOffset = $iTagClose + 1;
			}
			
			
			//zastepujemy stary content pliku
			$this->m_szFile = $szFile;
			
			//uaktualniamy info o rozmiarze contentu
			$this->m_szFileSize = strlen($this->m_szFile);
		}
		
		
		/* perform tpl file parsing */
		function Parse()
		{
			//adding few session data
			$hSession = CSession::GetInstance();
		
			$this->AddVar('klient_id',$hSession->GetVar('klient_id'));
			$this->AddVar('login',$hSession->GetVar('login'));
			//end of adding	
			
			$this->AddVar('get',$_GET);		 
			$this->AddVar('post',$_POST);	 
			$this->AddVar('cookie',$_COOKIE);
			$this->AddVar('session',$hSession->GetVarArray()); 
			
			//lang w templatach
			$szLang = $hSession->GetVar('lang');
			$szLang = ($szLang == '') ? 'pl' : $szLang;
			$this->AddVar('lang',$szLang);
			
			//dodajemy tablice lang
			global $aLang;
			$this->AddVar('aLang',isset($aLang) ? $aLang : array());
			
			
			//parametry z przyjaznych linkow
			$this->AddVar('url_param',CHttpParam::ToArray());
			
			
			$cOpenTag    = '{';		//znak otwarcia tagu
			$cCloseTag   = '}';		//znak zamkniecia tagu
			
			$iOffset     = 0; 		//pozycja w pliku ktory jest przetwarzany
			$iTagOpen    = 0; 		//znak otwierajacy tag
			$iTagClose   = 0; 		//znak zamykajacy tag
					
			$bTagOpen    = false; 	//czy tag jest otwarty
			
			$m_szPhpCode = ''; 		//kod php do wykonania
			$szTag 		 = ''; 		//nazwa obecnie przetwarzane tag
			
			$bStyle		 = false;	//stan tagu style  - czy jest otwarty
			$bScript	 = false;	//stan tagu script - czy jest otwarty
			
			extract($this->m_hVar);	//importujemy zmienne do tablicy symboli dla exec
			
			
			//jesli mamy zaladowany kod szablonu wykonaj go bez kapilacji
			if($this->m_szPhpCode) 
			{ 
				eval($this->m_szPhpCode); 
				return; 
			}
			
			$this->ProcessInclude();
			
			
			while(true)
			{
				//gdy zakonczymy parsowanie dokumentu, wykonajmy kod
				if($iOffset >= $this->m_szFileSize)
				{
					//echo '<![CDATA['.$this->m_szPhpCode.']]></code>';
					eval($this->m_szPhpCode);
					break;
				}
			
				$iTagOpen  = strpos($this->m_szFile,$cOpenTag,$iOffset);
				$iTagClose = strpos($this->m_szFile,$cCloseTag,$iOffset);
				
				//if no tags were found, we print the html content till
				//the end of file
				if($iTagOpen === false || $iTagClose === false)
				{
					//replacing html " with php compatible \"
					$szHtmlCode = substr($this->m_szFile,$iOffset);
					$szHtmlCode = str_replace('"','\"',$szHtmlCode);
					//$szHtmlCode = trim($szHtmlCode);
					$this->m_szPhpCode .= 'print "'.$szHtmlCode.'"; ';
					
					$iOffset = $this->m_szFileSize;
					
					continue;
				}
				
				//zawartosc w klamrach tagu
				$szTag = substr($this->m_szFile,$iTagOpen+1,$iTagClose-$iTagOpen-1);
				
				//kasujemy biale znaki
				//	$szTag = trim($szTag);
				
				
				if(!$bTagOpen)
				{
					//replacing html " with php compatible \"
					$szHtmlCode = substr($this->m_szFile,$iOffset,$iTagOpen-$iOffset);
					$szHtmlCode = str_replace('"','\"',$szHtmlCode);
					$this->m_szPhpCode .= 'print  "'.$szHtmlCode.'"; ';
				}
				else
				{	
					$this->m_szPhpCode .= trim(substr($this->m_szFile,$iOffset,$iTagOpen-$iOffset));
				}
				
				//obsluga tagu style
				if(strncmp($szTag,'style',5) == 0) {   $bStyle = true; }
				
				if(strncmp($szTag,'/style',6) == 0) {  $bStyle = false; }
				
				if($bStyle && !$bTagOpen && $szTag != 'style')
				{	
					$szTag = str_replace('"','\"',$szTag);
					
					$this->m_szPhpCode .= 'print "{'.$szTag.'}";';
				}
				
				if($bStyle) { $iOffset = $iTagClose + 1; continue; }
				//koniec obslugi
				
				
				//obsluga tagu script
				if(strncmp($szTag,"script",5) == 0) {  $bScript = true;  }
				
				if(strncmp($szTag,"/script",6) == 0) { $bScript = false; }
				
				if($bScript && !$bTagOpen && $szTag != 'script' )
				{	
					$szTag = str_replace('"','\"',$szTag);
					
					$this->m_szPhpCode .= 'print "{'.$szTag.'}";';
				}
				
				if($bScript) { $iOffset = $iTagClose + 1;  continue; }
				//koniec obslugi
				
				
				//otwarcie sekcji php
				if(strncmp($szTag,"php",2) == 0) { $bTagOpen = true; }
				
				//zamkniecie sekcji php
				if(strncmp($szTag,"/php",3) == 0) { $bTagOpen = false; }
				
				
				
				//loop
				if(strncmp($szTag,"loop",3) == 0)
				{
					$szTag = str_replace('loop','for',$szTag);
				
					$this->m_szPhpCode .= $szTag." { ";
				}
				
				if(strncmp($szTag,"/loop",4) == 0)
				{
					$this->m_szPhpCode .= " } ";
				}
				
				//sekcja if
				if(strncmp($szTag,"if",1) == 0)
				{
					$szTag = str_replace('is(','isset(',$szTag);
					
					$this->m_szPhpCode .= $szTag." { ";
				}
				
				if(strncmp($szTag,"elseif",5) == 0)
				{
					$szTag = str_replace('elseif','else if',$szTag);
				
					$this->m_szPhpCode .= "} ".$szTag." { ";
				}
				else if(strncmp($szTag,"else",3) == 0 )
				{
					$this->m_szPhpCode .= '}';
					$this->m_szPhpCode .= 'else';
					$this->m_szPhpCode .= '{';
				}
				
				if(strncmp($szTag,"/if",2) == 0)
				{
					$this->m_szPhpCode .= '}';
				}
				
				//foreach section
				if(strncmp($szTag,"foreach",6) == 0)
				{
					$this->m_szPhpCode .= $szTag." { ";
				}
				
				if(strncmp($szTag,"/foreach",7) == 0)
				{
					$this->m_szPhpCode .= " } ";
				}
				
				if(strncmp($szTag,"continue",8) == 0) 
				{
					$this->m_szPhpCode .= 'continue;'; 
				}
				
				if(strncmp($szTag,"$",1) == 0 && strpos($szTag,'=') > 0)
				{
					list($szVar,$szVal) = explode('=',$szTag);
					
					$szVar = trim($szVar);
					$szVal = trim($szVal);
					
					$this->m_szPhpCode .= $szVar.'='.$szVal.';';
					
					$szTag = '';
				}
				else if(strncmp($szTag,'$',1) == 0 && 
				        (strpos($szTag,'++') > 0 || 
				         strpos($szTag,'--') > 0 ||
				         strpos($szTag,'+=') > 0 ||
				         strpos($szTag,'-=') > 0 ||
				         strpos($szTag,'*=') > 0 ||
				         strpos($szTag,'%=') > 0 ||
				         strpos($szTag,'/=') > 0 ||
				         strpos($szTag,'^=') > 0 ||
				         strpos($szTag,'&=') > 0 ||
				         strpos($szTag,'|=') > 0 ))
				{
					$this->m_szPhpCode .= $szTag.';';

					$szTag = '';
				}
				else if(strncmp($szTag,'$',1) == 0 && 
						 (strpos($szTag,'+') > 0 || 
				          strpos($szTag,'-') > 0 ||
				          strpos($szTag,'*') > 0 ||
				          strpos($szTag,'/') > 0 ))
				{
					$this->m_szPhpCode .= 'echo '.$szTag.';';
					
					$szTag = '';
				}
				else if(strncmp($szTag,'$',1) == 0 && strpos($szTag,'|') === false)
				{
					$szVarName = trim($szTag);
					
					if(!$szVarName || !isset($szVarName)) { continue; }
	
					$this->m_szPhpCode .= 'if( !isset('.$szVarName.') )';
					$this->m_szPhpCode .= '{ ';
					$this->m_szPhpCode .= $szVarName.'="";';
					$this->m_szPhpCode .= '}';
					$this->m_szPhpCode .= 'else {';
					$this->m_szPhpCode .= 'str_replace('."'"."\""."'".","."'".'\"'."'".",$szVarName); ";
					$this->m_szPhpCode .= 'print  '.$szVarName.' ; ';
					$this->m_szPhpCode .= '}';
					
					$szVarName = '';
				}
				else if(strncmp($szTag,'$',1) == 0 && strpos($szTag,'|') > 0)
				{
					$aParams = explode('|',$szTag);
	
					if(!is_array($aParams) || !isset($aParams[0]) ) { continue; }
					
					$szVarName = trim($aParams[0]);
					
					$this->m_szPhpCode .= 'if( !isset('.$szVarName.') )';
					$this->m_szPhpCode .= '{ ';
					$this->m_szPhpCode .= $szVarName.'="";';
					$this->m_szPhpCode .= '}';
					
					
					foreach($aParams as &$szTmp)
					{
						$szTmp = trim($szTmp);
						
						//kasuje tagi html'owe
						if(strncmp($szTmp,"nohtml",5) == 0)
						{
							$this->m_szPhpCode .= "echo strip_tags($szVarName);";
						}
						
						//zamienia entera na br
						if(strncmp($szTmp,"nl2br",4) == 0)
						{
							$this->m_szPhpCode .= "echo nl2br($szVarName); ";
						}
						
						//castuje zmienna na int
						if(strncmp($szTmp,"int",2) == 0)
						{
							$this->m_szPhpCode .= "echo (int)$szVarName;";
						}
						
						//castuje zmienna na float
						if(strncmp($szTmp,"float",4) == 0)
						{
							$this->m_szPhpCode .= "$echo (float)$szVarName;";
						}
						
						//urlencoduje
						if(strncmp($szTmp,"url",2) == 0)
						{
							$this->m_szPhpCode .= "echo urlencode($szVarName);";
						}
						
						//castuje zmienna do typu money
						if(strncmp($szTmp,"money",4) == 0)
						{	
							$this->m_szPhpCode .= "echo number_format($szVarName,2,',',' ');";
						}
						
						//obcina text do zadanej dlugosci
						if(strncmp($szTmp,"less",3) == 0)
						{
							$iPos   = strpos($szTmp	,":") + 1;
							$iCount = substr($szTmp,$iPos);
							
							$this->m_szPhpCode .= "echo substr($szVarName,0,(int)$iCount);";
						}
						
						//zmienna bedzie zawierac tylko podstawowe znaki ascii
						if(strncmp($szTmp,"ascii",3) == 0)
						{						
							$this->m_szPhpCode .= '$g_szTmp = ""; ';
							
							$this->m_szPhpCode .= '$g_aRepA = array("ą","ę","ś","ć","ł","ó","ń","ź","ż"); ';
							$this->m_szPhpCode .= '$g_aRepB = array("a","e","s","c","l","o","n","z","z"); ';
							
							$this->m_szPhpCode .= '$g_szTmp = '.$szVarName.';';
							$this->m_szPhpCode .= '$g_szTmp = urldecode($g_szTmp);';
							$this->m_szPhpCode .= '$g_szTmp = mb_strtolower($g_szTmp);';
							$this->m_szPhpCode .= '$g_szTmp = str_replace($g_aRepA,$g_aRepB,$g_szTmp);';
							
							$this->m_szPhpCode .= 'for($i=0;$i<strlen($g_szTmp);$i++)';
							$this->m_szPhpCode .= '{ ';
							$this->m_szPhpCode .= '$g_szTmp[$i] = ctype_alnum($g_szTmp[$i]) ? $g_szTmp[$i] : "-"; ';
							$this->m_szPhpCode .= '} ';
							
							$this->m_szPhpCode .= 'print trim($g_szTmp,"-");';
						}
						
						if(strncmp($szTmp,'ord',2) == 0)
						{
							$this->m_szPhpCode .= '$g_szTmp = '.$szVarName.';';
							$this->m_szPhpCode .= '$g_szOut = ""; ';
							
							$this->m_szPhpCode .= 'for($i=0;$i<strlen($g_szTmp);$i++)';
							$this->m_szPhpCode .= '{ ';
							$this->m_szPhpCode .= '$g_szOut .= "&#".ord($g_szTmp[$i]); ';
							$this->m_szPhpCode .= '} ';
							
							$this->m_szPhpCode .= 'print $g_szOut;';
						}
						
						if(strncmp($szTmp,'js-array',7) == 0)
						{
							$this->m_szPhpCode .= '$g_szTmp = '.$szVarName.';';
							$this->m_szPhpCode .= '$g_szOut = ""; ';
							
							$this->m_szPhpCode .= 'foreach($g_szTmp as $aTmp)';
							$this->m_szPhpCode .= '{';
							$this->m_szPhpCode .= '$g_szOut .= implode("\',\'",$aTmp); ';
							$this->m_szPhpCode .= '}';
						}
						
					}
					
					$szVarName = '';
				}
				
			
				if( strncmp($szTag,'print',4) == 0  && strpos($szTag,'$') > 0) 
				{
					$szVarName = substr($szTag,strpos($szTag,'$'));
					$szVarName = trim($szVarName);
					
					$this->m_szPhpCode .= 'if( !isset($szVar) )';
					$this->m_szPhpCode .= '{ ';
					$this->m_szPhpCode .= 'echo  "undefined"; ';
					$this->m_szPhpCode .= '}';
					$this->m_szPhpCode .= 'else';
					$this->m_szPhpCode .= '{ ';
					$this->m_szPhpCode .= 'print "<pre>"; ';
					$this->m_szPhpCode .= 'print_r('.$szVarName.'); ';
					$this->m_szPhpCode .= 'print "</pre>"; ';
					$this->m_szPhpCode .= '}';
				}
				
				if(strncmp($szTag,'#lang',4) == 0)
				{
					$szVarName = substr($szTag,6);
					$szVarName = '$aLang[$lang]'."['".str_replace(".","']['",$szVarName)."']";
					
					$this->m_szPhpCode .= 'if( !isset('.$szVarName.') )';
					$this->m_szPhpCode .= '{ ';
					$this->m_szPhpCode .= 'echo  "undefined"; ';
					$this->m_szPhpCode .= '}';
					$this->m_szPhpCode .= 'else';
					$this->m_szPhpCode .= '{ ';
					$this->m_szPhpCode .= 'echo '.$szVarName.';';
					$this->m_szPhpCode .= '}';
				}
				
				if(strncmp($szTag,"#isotime",4) == 0) 
				{
					$this->m_szPhpCode .= 'echo date("Y-m-d H:i:s", $_SERVER["REQUEST_TIME"] );';
				}
				
				if(strncmp($szTag,"#year",4) == 0) 
				{
					$this->m_szPhpCode .= 'echo date("Y", $_SERVER["REQUEST_TIME"] );';
				}
		
				if(strncmp($szTag,"#pltime",4) == 0) 
				{    
					$this->m_szPhpCode .= 'echo date("H:i:s d-m-Y", $_SERVER["REQUEST_TIME"] );';
				}
				
				if(strncmp($szTag,"checkval",7) == 0 )
				{
					$szVar = trim(substr($szTag,8));
					 
					$this->m_szPhpCode .= 'if( !isset('.$szVar.') )';
					$this->m_szPhpCode .= '{ ';
					$this->m_szPhpCode .= $szVar.'="";';
					$this->m_szPhpCode .= '}';
					$this->m_szPhpCode .= 'else { echo '.$szVar.'; }';
					
				}
				
				//do checkbox'ow
				if(strncmp($szTag,"checked",6) == 0) 
				{
					$szVar = trim(substr($szTag,7));
				
					$this->m_szPhpCode .= 'if( isset('.$szVar.') && '.$szVar.' == 1) { echo "checked"; }';
				}
				
				//do select
				if(strncmp($szTag,"selected",7) == 0) 
				{
					$szWhat = trim(substr($szTag,8));
					
					$this->m_szPhpCode .= 'if('.$szWhat.') { echo "selected"; }';
				}
					
				if(strncmp($szTag,"changeurl",8) == 0) 
				{
					$szVar = trim(substr($szTag,9));
					
					list($szWhat,$szTo) = explode(' ',$szVar);
								
					if( strpos($szTo,'$') === false )
					{
						$this->m_szPhpCode .= 'if(strpos($_SERVER["REQUEST_URI"],"'.$szWhat.'"))';
						$this->m_szPhpCode .= '{';
						$this->m_szPhpCode .= 'echo eregi_replace("'.$szWhat.'=[_a-z0-9-]+","'.$szWhat.'='.$szTo.'",$_SERVER["REQUEST_URI"]);';
						$this->m_szPhpCode .= '}';
						$this->m_szPhpCode .= 'else';
						$this->m_szPhpCode .= '{';
						$this->m_szPhpCode  .= 'echo  $_SERVER["REQUEST_URI"].( strpos($_SERVER["REQUEST_URI"],"?")  ? "&" : "?")."'.$szWhat.'='.$szTo.'";';
						$this->m_szPhpCode .= '}';
					}
					else
					{
						$this->m_szPhpCode .= 'if(strpos($_SERVER["REQUEST_URI"],"'.$szWhat.'"))';
						$this->m_szPhpCode .= '{';
						$this->m_szPhpCode .= 'echo eregi_replace("'.$szWhat.'=[_a-z0-9-]+","'.$szWhat.'=".'.$szTo.',$_SERVER["REQUEST_URI"]);';
						$this->m_szPhpCode .= '}';
						$this->m_szPhpCode .= 'else';
						$this->m_szPhpCode .= '{';
						$this->m_szPhpCode  .= 'echo  $_SERVER["REQUEST_URI"].( strpos($_SERVER["REQUEST_URI"],"?")  ? "&" : "?")."'.$szWhat.'=".'.$szTo.';';
						$this->m_szPhpCode .= '}';
					}
				}
			
				$szTag = '';
				
				$iOffset = $iTagClose + 1;

			
			}//koniec petli while
			
		}//koniec metody parse
				
    }    
?>